iT邦幫忙

2024 iThome 鐵人賽

DAY 18
0
JavaScript

大學生必學的Java入門技巧系列 第 18

[Day18] 真的蠻抽象的抽象-Abstract

  • 分享至 

  • xImage
  •  

在第12天的文章"無處不見的修飾符(modifier)"中,有提到abstract這個修飾符,但當初只是簡單帶過。今天將更為詳細的說明它的概念,馬上進入正題吧。

抽象類別(Abstract Class) 是什麼
abstract翻譯成抽象,它可以當作Class和method的修飾符,而abstract method只能在同為abstract的class中使用。"抽象"這個名詞其實就是"不完全具體化"的東西,也就是說,我們是在定義一個「概念」,而不是具體的「行動」。因此抽象類別中的方法只有定義,而不包含實際操作。所以,當有類別要繼承抽象類別時,必須要override其中的所有抽象方法。
補充說明一點:抽象類別中除了抽象方法,也允許非抽象方法存在。

舉一個生活化的例子:
每個手機品牌都有不同的功能,比如有的手機拍照功能強;有的手機電池耐用。但有些功能是所有手機都會有的,比如開機、關機、打電話。這些功能,不管手機品牌為何,都是一樣的。
在 Java 裡,抽象類別(Abstract Class) 就像是一個「手機模板」,定義了所有手機都會有的基本功能,但具體的功能實現會留給不同的手機品牌來決定。

再來,abstract Class是不允許實例化物件的,它只能作為一種data type用來做多形應用。既然抽象類別不能實例化,那麼它的構造函數目的是什麼呢?
答案是,它可以透過繼承它的子類別的super( )關鍵字來呼叫其構造函數,其實有點拐一個彎來操作的感覺。

寫完有一種頭昏腦脹的感覺,抽象真的有點難懂...


上一篇
[Day17] 不同場合;不同身分-多形
下一篇
[Day19] 原來是抽象派啊-Interface
系列文
大學生必學的Java入門技巧30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言